#ifndef _BOARD_H
#define _BOARD_H

#include "Define.h"
#include "Square.h"

class Board
{
    private:

		//Tableau 2D représentant l'othellier
        Square boardTable[8][8];

        //Board en animation = une case au moins en animation
		bool animated;
                
    public:

        //Constructeur
        Board();
        
        //Initialise l'othellier pour une nouvelle partie
        void initialization();

        //Ajoute un pion sur l'othellier
        bool addPawn(int,int,ColorPawn);

        //Retourne un pion de l'othellier
        bool turnDownPawn(int,int);

        //Ajoute un coup légal sur l'othellier
        bool addRegularMove(int,int);

        //Supprime les animations de la Board
        void clearAnimation();

		//Mutateur de la variable 'animated'
		void setAnimated(bool);

		//Accesseur qui retourne l'état d'animation de la board
		bool getAnimated();

        //Accesseur qui retourne le type d'une case de l'othellier
        TypeSquare getTypeSquareBoard(int,int);

        //Accesseur qui retourne la couleur d'un pion de l'othellier
        ColorPawn getColorPawnBoard(int,int);

        //Accesseur qui retourne l'état d'animation de la case
        bool getAnimatedSquare(int,int);

		//Accesseur qui retourne la valeur de 'lastMove'
		bool getLastMoveSquare(int,int);
		
		//Vide la case (x,y)
		void emptySquare(int,int);
		//Active 'lastMove' de la case (x,y)
		void enableLastMoveSquare(int,int);

        //Supprime les 'coups jouables' de l'othellier
        void clearRegularMove();


	private:
			
        //Vide entièrement l'othellier
        void emptyBoard();

        //Supprime le dernier coup joué de l'othellier
        void clearLastMove();
};

#endif
